<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        // 写一个函数 要求：任意两个不同数字的最大值，并能返回运算后的结果
        function getMax(num1, num2) {
            // if (num1 > num2) {
            //     return num1;
            // } else {
            //     return num2;
            // }
            return num1 > num2 ? num1 : num2;
        }
        console.log(getMax(1, 2));
        console.log(getMax(11, 2));

        // 写一个函数 要求：一个数组 [5,2,99,101,67,77] 中的最大数值
        function getArrMax(arr) {
            var max = arr[0]; // max 存默认数组的第一个元素
            for (var i = 1; i < arr.length; i++) {
                if (max < arr[i]) {
                    max = arr[i];
                }
            }
            return max;
        }
        console.log(getArrMax([5, 2, 99, 101, 67, 77]));
        console.log(getArrMax([1, 66, 3, 99]));

        // 写一个函数 要求：翻转数组，返回一个新数组
        function reverse(arr) {
            var newArr = [];
            for (var i = 0; i < arr.length; i++) {
                newArr[i] = arr[arr.length - i - 1];
            }
            return newArr;
        }
        console.log(reverse(['red', 'green', 'blue', 'pink', 'purple']));
        console.log(reverse([1, 55, 2, 10]));

        // 写一个函数 要求：对数组排序，从小到大 -- 冒泡排序
        function sort(arr) {
            for (var i = 0; i < arr.length - 1; i++) {
                for (var j = 0; j < arr.length - i - 1; j++) {
                    if (arr[j] > arr[j + 1]) {
                        var temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
            return arr; // 我们返回的是数组
        }
        console.log(sort([5, 4, 3, 2, 1])); // 我们送过去的是数组
        console.log(sort([2, 5, 10, 1, 22, 99]));

        // 写一个函数 要求：输入一个年份，判断是否是闰年
        function isRun(year) {
            var flag = false; // 声明了一个布尔型的变量 用来记录是不是闰年
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                flag = true;
            }
            return flag;
        }
        console.log(isRun(2008)); // true
        console.log(isRun(2018)); // false

        // 写一个函数 要求：输入一个年份，如果是闰年，就返回 2月是 29天 否则返回 28天
        function backDay(year) {
            if (isRun(year)) { // 函数里面可以在调用其他的函数的
                return '2月份是 29'
            } else {
                return '2月份是 28'
            }
        }
        console.log(backDay(2008));
        console.log(backDay(2018));

        // 写一个函数 要求：输入某年某月某日，判断这一天是这一年的第几天？
        // 2018,1,2   过了2天了 
        // 2018,2,2   过了33天了 
        // 案例的核心思想 ：  首先第一步求出 当前月份的天数   在累加前面 月份的天数 
        // 难点  每个月分的天数不一样  1,3,5,7,8,10,12  每月是31天  4,6,9,11 他们是 30天 
        // 2月份  闰年是 29天   平年是 28
        function getDays(year, month, day) {
            var days = day; // 当前月份的天数
            // 累加前面每个月的总天数 就需要遍历 循环
            for (var i = 1; i < month; i++) {
                switch (i) {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        days += 31;
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        days += 30;
                        break;
                    case 2:
                        if (isRun(year)) {
                            days += 29;
                        } else {
                            days += 28;
                        }
                }
            }
            return days;
        }
        console.log(getDays(2018, 1, 2));
        console.log(getDays(2018, 1, 8));
        console.log(getDays(2018, 5, 8));
        console.log(getDays(2018, 2, 2));

        // 1，1，2，3，5，8，13，21   求第9个数字是多少(可选)  斐波那契数列
        // 1. 序列的规律  前面两项相加 正好等于第三项
        // 1 + 1 = 2
        // 1 + 2 = 3
        // 2 + 3 = 5 ...
        // 2. 这个序列要计算 需要 3个数参与运算  我们求的是 第三项 ，需要我们知道前面两项的结果
        // 3. 我们要求的是 第9个数字，那我们需要知道 第 7个 和 第 8个 数子 
        // 4. 借助于循环帮我们完成    整个序列前面2项是固定的都是1
        function getFib(num) {
            // num 里面存的9 是 个数 第 9个数的意思
            var n1 = 1;
            var n2 = 1;
            return n3;
            var n3;
            for (var i = 3; i <= num; i++) {
                n3 = n1 + n2;
                // 循环的时候，每次进行一轮 那里面  n1 和 n2  前两项的值一定要发生变化
                // 下一轮的 n1 等于上一轮的 n2   下一轮的n2  等于 上一轮的 n3
                n1 = n2;
                n2 = n3;
            }

        }
        console.log(getFib(9));
        console.log(getFib(6));
    </script>
</head>

<body>

</body>

</html>